home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / linux / adfs_fs.h < prev    next >
C/C++ Source or Header  |  2005-10-13  |  2KB  |  77 lines

  1. #ifndef _ADFS_FS_H
  2. #define _ADFS_FS_H
  3.  
  4. #include <linux/types.h>
  5.  
  6. /*
  7.  * Disc Record at disc address 0xc00
  8.  */
  9. struct adfs_discrecord {
  10.     __u8  log2secsize;
  11.     __u8  secspertrack;
  12.     __u8  heads;
  13.     __u8  density;
  14.     __u8  idlen;
  15.     __u8  log2bpmb;
  16.     __u8  skew;
  17.     __u8  bootoption;
  18.     __u8  lowsector;
  19.     __u8  nzones;
  20.     __le16 zone_spare;
  21.     __le32 root;
  22.     __le32 disc_size;
  23.     __le16 disc_id;
  24.     __u8  disc_name[10];
  25.     __le32 disc_type;
  26.     __le32 disc_size_high;
  27.     __u8  log2sharesize:4;
  28.     __u8  unused40:4;
  29.     __u8  big_flag:1;
  30.     __u8  unused41:1;
  31.     __u8  nzones_high;
  32.     __le32 format_version;
  33.     __le32 root_size;
  34.     __u8  unused52[60 - 52];
  35. };
  36.  
  37. #define ADFS_DISCRECORD        (0xc00)
  38. #define ADFS_DR_OFFSET        (0x1c0)
  39. #define ADFS_DR_SIZE         60
  40. #define ADFS_DR_SIZE_BITS    (ADFS_DR_SIZE << 3)
  41. #define ADFS_SUPER_MAGIC     0xadf5
  42.  
  43. #ifdef __KERNEL__
  44. #include <linux/adfs_fs_i.h>
  45. #include <linux/adfs_fs_sb.h>
  46. /*
  47.  * Calculate the boot block checksum on an ADFS drive.  Note that this will
  48.  * appear to be correct if the sector contains all zeros, so also check that
  49.  * the disk size is non-zero!!!
  50.  */
  51. static inline int adfs_checkbblk(unsigned char *ptr)
  52. {
  53.     unsigned int result = 0;
  54.     unsigned char *p = ptr + 511;
  55.  
  56.     do {
  57.             result = (result & 0xff) + (result >> 8);
  58.             result = result + *--p;
  59.     } while (p != ptr);
  60.  
  61.     return (result & 0xff) != ptr[511];
  62. }
  63.  
  64. static inline struct adfs_sb_info *ADFS_SB(struct super_block *sb)
  65. {
  66.     return sb->s_fs_info;
  67. }
  68.  
  69. static inline struct adfs_inode_info *ADFS_I(struct inode *inode)
  70. {
  71.     return container_of(inode, struct adfs_inode_info, vfs_inode);
  72. }
  73.  
  74. #endif
  75.  
  76. #endif
  77.